import { defineWrappedResponseHandler } from "#server/utils/handler"; import { R } from "#server/utils/response"; import { resolveAgentIdentity } from "#server/service/agent/identity"; import { getSessionByIdAndUser, getMessagesBySession } from "#server/service/agent/session"; import { getAgentBySlug } from "#server/service/agent/agent"; export default defineWrappedResponseHandler(async (event) => { const agentSlug = getRouterParam(event, "agentSlug"); const id = getRouterParam(event, "id"); if (!agentSlug || !id) { return R.error("参数无效", null); } const agent = await getAgentBySlug(agentSlug); if (!agent) { return R.error("agent 不存在", null); } const identity = await resolveAgentIdentity(event); const session = await getSessionByIdAndUser(id, identity.userId, identity.tempToken); if (!session) { return R.error("会话不存在", null); } if (session.agentId !== agent.id) { return R.error("会话不属于该 agent", null); } const query = getQuery(event); const before = query.before ? Number(query.before) : undefined; const limit = Number(query.limit) || 50; const messages = await getMessagesBySession(id, { before, limit, userId: identity.userId }); return R.success({ messages, hasMore: messages.length === limit }); });